/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.ArrayList;
import java.util.Collections;

/**
 * Opretter bunken som det der svarer til en hånd
 *
 * @author Jeppe
 */
public class Bunke {

    String bunkeNavn;
    private ArrayList<Kort> bunke = new ArrayList<>();
    //Spiller[] aktiv;

    /**
     * Constructor opretter en bunke som man kan lægge kort på.
     */
    public Bunke(String navn) {
        bunkeNavn = navn;
    }

    public String getBunkeNavn() {
        return bunkeNavn;
    }

    public Kort getØversteKort() {
        return this.bunke.get(bunke.size() - 1);
    }
    public Kort getKort (int index){
        return this.bunke.get(index);
    }
    public int getAntalKortIBunke() {
        return this.bunke.size();
    }

    /**
     * vendKort vender et kort fra decket sådan at spilleren der starter har
     * noget at bekende kulør/kortnummer Dette sker kun én gang for hvert spil.
     *
     * @param etKort Hvilket deck og trækNæsteKort. Ex: vendKort
     * (deck1.trækNæsteKort)
     */
    public void vendKort(Kort etKort) {
        //Laver fejl og exit'er hvis der mod forventning skulle komme 26 kort på hånden.
        if (this.bunke.size() == 52) {
            System.err.printf("%s's bunke, har nået maximummet af hvad bunken"
                    + "kan indeholde. \n", this.bunkeNavn);
            System.exit(1);
        }

        // tilføjer et kort til bunken
        this.bunke.add(etKort);
    }

    /**
     * Trækker et kort fra en spiller og lægger den i bunken. Skal kaldes med en
     * ArrayList og et index.
     *
     * @param etKort = ex: (ArrayList,int index)
     */
    public void trækKortFraSpiller(Kort etKort) {
        //Laver fejl og exit'er hvis der mod forventning skulle komme 26 kort på hånden.
        if (this.bunke.size() == 52) {
            System.err.printf("%s, har nået maximummet af hvad bunken"
                    + "kan indeholde. \n");
            System.exit(1);
        }

        // tilføjer et kort til bunken 
        this.bunke.add(etKort);
    }

    public void vendBunke() {
        Collections.reverse(this.bunke);
    }
    /**
     * Fjerner et kort fra bunken.
     * @param kort hvilket index man vil fjerne kortet fra.
     */
    public void fjernEtEnkelt(int kort){
        this.bunke.remove(kort);
    }
    public void udskrivBunkeKort(boolean visKort) {        
        System.out.printf("%s's øverste kort: ", this.bunkeNavn);
        int c;
        if (bunke.size() == 1) {
            c = bunke.size() - 1;
        } else {
            c = bunke.size() - 1;
        }
        if (c == 0 && !visKort) {
            System.out.println("   (Skjult)");

        } else {
            System.out.println(this.bunke.get(c));
        }
    }
    public void tømBunke(){
        bunke.clear();
    }

}
